package edu.object_oriented.poly;

public class DownTransformation {

    public static void main(String[] args) {
        Parent parent = new Parent();
        Child1 child1 = new Child1();
        //向上转型   子 转 父   int  --- >  long   系统自动转
        parent = child1;
        //向下转型   父 转 子  long ----> int
        // 可能会出现类型转换异常   ClassCastException
//        child1 =(Child1) parent;
        //为了避免向下转型出现异常   在转型之前  做类型检查  instanceof
        //父类对象  instanceof  子类类型
        System.out.println(parent instanceof Child1);
        if (parent instanceof Child1){
            child1 = (Child1) parent;
            child1.say();
        }
    }
}

class Parent{
    void say(){
        System.out.println("parent");
    }
}
class Child1 extends Parent{
    @Override
    void say() {
        System.out.println("child1");
    }
}
class Child2 extends Parent{
    @Override
    void say() {
        System.out.println("child2");
    }
}